<template>
  <div style="padding:0 20px;">
    <div class="search-box">
      <Row type="flex">
        <Col class="search-item">
        <span class="search-label">配置名称:</span>
        <Input v-model="searchObj.name"
               placeholder="请输入"
               :maxlength="50"
               @on-keyup='filterSpace'>
        </Input>
        </Col>
        <Col class="search-item">
        <span class="search-label">配置类型:</span>
        <Select v-model="searchObjCur.manner">
          <Option v-for="item in mannerList"
                  :value="item.value"
                  :key="item.value">{{ item.label }}</Option>
        </Select>
        </Col>
        <Col class="search-item">
        <Button class="search-btn"
                type="primary"
                @click="doSearch">查询</Button>
        <Button class="search-btn"
                style="margin-left:10px;"
                @click="doReset">重置</Button>
        </Col>
      </Row>
    </div>
    <!-- <Row style="padding:12px 40px;">
          <Col span="11" v-for="(item, i) in filterData" :key="i" :offset="i % 2 ? 2 : 0">
            <Card class="setting-card">
              <div class="setting-left">
                <p class="setting-title">{{item.name}}</p>
                <p class="setting-content">{{item.description}}</p>
                <p class="setting-time">{{item.updateTime}}</p>
              </div>
              <div class="setting-right">
                <Button type="primary" class="setting-btn" v-if="item.manner == 1" @click="goSetting(item.fid)">设置</Button>
                <i-Switch v-model="item.dictValue" @on-change="handleSwitch(item)" v-else></i-Switch>
              </div>
            </Card>
          </Col>
       </Row> -->
    <setting-card :filterData='filterData'
                  @goSetting='goSetting'
                  @handleSwitch="handleSwitch"></setting-card>
    <!-- <div class="page-box" style="margin:0;">
      <Page :total="total" :current.sync="searchObjCur.page" @on-change="handlePage" @on-page-size-change="handlePageSize" show-sizer show-total/>
    </div> -->
  </div>
</template>
<script>
import SettingCard from '@/view/components/setting-card/setting-card.vue'
import { setDicSave, getDicQuery } from '@/api/setting'
export default {
  name: 'store_setting',
  components: {
    SettingCard
  },
  data () {
    return {
      mannerList: [
        {
          value: '-1',
          label: '全部'
        },
        {
          value: 1,
          label: '参数配置'
        },
        {
          value: 0,
          label: '开关配置'
        }
      ],
      searchObj: {
        name: ''
      },
      searchObjCur: {
        name: '',
        manner: '-1',
        page: 1,
        size: 10
      },
      allData: [
        {
          'code': 'businessDayTime',
          'description': '设置门店营业日的财务结算时间，根据设定的时间进行报表统计',
          'manner': 1,
          'position': null,
          'name': '营业日结算时间设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:businesshours',
          'fid': 10
        },
        {
          'code': 'printReceiptCancel',
          'description': '设置门店的非会员彩票打印的最低标准',
          'manner': 1,
          'position': null,
          'name': '非会员彩票打印极值设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:customerticketprint',
          'fid': 4
        },
        {
          'code': 'marqueeLedColour',
          'description': '设置跑马灯功能的开关，颜色及显示频率',
          'manner': 1,
          'position': null,
          'name': '跑马灯设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:horselamp',
          'fid': 7
        },
        {
          'code': 'pricePerCoin',
          'description': '设置门店的游戏币销售价格标准',
          'manner': 1,
          'position': null,
          'name': '游戏币单价设置',
          'updateTime': null,
          'dictValue': '0',
          'sn': 'moms:setting:coinprice',
          'fid': 1
        },
        // {
        //   'code': 'shopArea',
        //   'description': '设置店内分区',
        //   'manner': 1,
        //   'position': null,
        //   'name': '店内区域设置',
        //   'updateTime': null,
        //   'dictValue': null,
        //   'fid': 2
        // },
        {
          'code': 'directorGift',
          'description': '设置门店的各角色签赠标准',
          'manner': 1,
          'position': null,
          'name': '签赠设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:signing',
          'fid': 11
        },
        {
          'code': 'enabledUnionPay',
          'description': '设置收银台显示的支付方式',
          'manner': 1,
          'position': null,
          'name': '收银台支付方式显示设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:paytype',
          'fid': 3
        },
        {
          'code': 'enablePrintReceipt',
          'description': '设置是否打印小票的开关',
          'manner': 1,
          'position': null,
          'name': '打印小票开关配置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:consumerprint',
          'fid': 5
        },
        {
          'code': 'cashier',
          'description': '设置绑定及解绑收银点的功能',
          'manner': 1,
          'position': null,
          'name': '收银点设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:cashier',
          'fid': 20
        },
        {
          'code': 'businessItem',
          'description': '管理收款项中商品，具有套餐的添加、修改、查询、删除等功能',
          'manner': 1,
          'position': null,
          'name': '收款项设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:bizitem',
          'fid': 21
        },
        {
          'code': '',
          'description': '管理套餐，具有套餐的添加、修改、查询、删除等功能',
          'manner': 1,
          'position': null,
          'name': '套餐设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:package',
          'fid': 12
        },
        {
          'code': '',
          'description': '设置水吧套餐类别，具有水吧套餐类别的添加、修改、查询、删除等功能',
          'manner': 1,
          'position': null,
          'name': '水吧商品类别设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:restzonegoodscategory',
          'fid': 14
        },
        {
          'code': '',
          'description': '管理水吧套餐，具有水吧套餐的添加、修改、查询、删除等功能',
          'manner': 1,
          'position': null,
          'name': '水吧套餐设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:restzonepackage',
          'fid': 22
        },
        {
          'code': '',
          'description': '设置水吧是否支持打印小票的功能',
          'manner': 1,
          'position': null,
          'name': '水吧打印设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:restzoneprint',
          'fid': 15
        },
        {
          'code': '',
          'description': '管理礼品商品，具有礼品商品的添加、修改、查询、删除等功能',
          'manner': 1,
          'position': null,
          'name': '礼品商品设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:gift',
          'fid': 13
        },
        {
          'code': '',
          'description': '设置自采礼品，具有自采礼品的添加、修改、查询、删除等功能',
          'manner': 1,
          'position': null,
          'name': '自采供应商设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:supplier',
          'fid': 28
        },
        {
          'code': '',
          'description': '设置礼品类别，具有礼品类别的添加、修改、查询、删除等功能',
          'manner': 1,
          'position': null,
          'name': '礼品类别设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:giftcategory',
          'fid': 16
        },
        {
          'code': '',
          'description': '管理水吧商品，具有水吧商品的添加、修改、查询、删除等功能',
          'manner': 1,
          'position': null,
          'name': '水吧商品设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:restzonegoods',
          'fid': 23
        },
        {
          'code': '',
          'description': '设置机台出实体彩票或电子彩票',
          'manner': 1,
          'position': null,
          'name': '出彩票类型配置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:tickettype',
          'fid': 24
        },
        {
          'code': '',
          'description': '更换门店刷卡器的待机动画物料',
          'manner': 1,
          'position': null,
          'name': '刷卡器待机动画设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:idlescreen',
          'fid': 26
        },
        {
          'code': '',
          'description': '门店可选择固件进行升级，支持查看门店固件升级的历史记录',
          'manner': 1,
          'position': null,
          'name': '固件升级设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:firmware',
          'fid': 6
        },
        {
          'code': '',
          'description': '管理兑换券，具有兑换券添加、修改、查询、删除等功能',
          'manner': 1,
          'position': null,
          'name': '兑换券设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:coupon',
          'fid': 27
        },
        {
          'code': '',
          'description': '设置门店的兑奖台存币开关功能',
          'manner': 1,
          'position': null,
          'name': '兑奖台存币开关',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:exchangecoinswitch',
          'fid': 29
        },
        {
          'code': '',
          'description': '设置统一的全电子币经营模式',
          'manner': 1,
          'position': null,
          'name': '全电子币经营模式',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:virtualcoin',
          'fid': 30
        },
        {
          'code': '',
          'description': '设置SVIP权益产品',
          'manner': 1,
          'position': null,
          'name': 'SVIP权益设置',
          'updateTime': null,
          'dictValue': null,
          'sn': 'moms:setting:svipbenefit',
          'fid': 31
        }
        // {
        //   'code': '',
        //   'description': '',
        //   'manner': 1,
        //   'position': null,
        //   'name': '网络联网设备设置',
        //   'updateTime': null,
        //   'dictValue': null,
        //   'fid': 18
        // },
        // {
        //   'code': '',
        //   'description': '',
        //   'manner': 1,
        //   'position': null,
        //   'name': '网络中继设备设置',
        //   'updateTime': null,
        //   'dictValue': null,
        //   'fid': 19
        // }
      ],
      dataList: [],
      filterData: []
    }
  },
  watch: {
    manner (val) {
      this.searchObjCur.page = 1
      this.doFilterData()
    },
    '$route' (newRoute) {
      if (newRoute.name === 'store_setting') {
        this.getDicQuery()
      }
    }
  },
  computed: {
    total () {
      return this.filterData.length
    },
    // disData () {
    //   return this.filterData.slice((this.searchObjCur.page - 1) * this.searchObjCur.size, this.searchObjCur.page * this.searchObjCur.size)
    // },
    manner () {
      return this.searchObjCur.manner
    }
  },
  methods: {
    filterSpace () {
      this.searchObj.name = this.searchObj.name.replace(/\s+/g, '')
    },
    goSetting (fid) {
      this.$router.push({
        name: 'store_setting_page_' + fid,
        query: {
          id: this.$route.params.id
        }
      })
    },
    handlePage (val) {
      this.searchObjCur.page = val
      this.doFilterData()
    },
    handlePageSize (val) {
      this.searchObjCur.size = val
      this.doFilterData()
    },
    doSearch () {
      this.searchObjCur.page = 1
      this.searchObjCur.name = this.searchObj.name
      this.doFilterData()
    },
    doReset () {
      this.searchObj.name = ''
      this.searchObjCur = {
        ...this.searchObjCur,
        name: '',
        manner: '-1',
        page: 1
      }
      this.doFilterData()
    },
    doFilterData () {
      let data = this.dataList.filter(item => {
        return (item.name.indexOf(this.searchObjCur.name) !== -1) && (this.searchObjCur.manner === '-1' ? true : (item.manner === this.searchObjCur.manner))
      })
      data.forEach(item => {
        item.dictValue = typeof item.dictValue === 'string' ? (item.dictValue !== '0') : item.dictValue
      })
      this.filterData = data
    },
    handleSwitch (item) {
      let obj = {
        'shopId': this.$route.params.id,
        'merchantId': this.$store.state.user.merchantId,
        'msType': '1'
      }
      obj[item.code] = item.dictValue ? '1' : '0'
      setDicSave(obj).then(res => {
        if (res.data.data.status === 200) {
          this.$Message.success('操作成功')
        }
      })
    },
    getDicQuery () {
      this.dataList = this.allData.filter(item => {
        return this.hasPermission(item.sn)
      })
      let keys = this.dataList.filter(item => item.code !== '').map(item => {
        return item.code !== ''
      })
      if (keys.length > 0) {
        getDicQuery({
          'shopId': this.$route.params.id,
          'merchantId': this.$store.state.user.merchantId,
          'msType': '1',
          'dictKeys': keys.join(',')
        }).then(res => {
          if (res.data.status === 200) {
            res.data.data.forEach(data => {
              for (var p in data) {
                this.dataList.forEach(item => {
                  if (p === item.code) {
                    item['updateTime'] = data['updateTime']
                    item['dictValue'] = data[p]
                  }
                })
              }
            })
            this.doSearch()
          } else {
            this.$Message.error(`${res.data.error}`)
          }
        })
      } else {
        this.doSearch()
      }
    }
  },
  created () {
    this.getDicQuery()
  }
}
</script>
<style>
@media (min-width: 1600px) {
  .ivu-col-span-xl-7 {
    display: block;
    width: 32%;
    float: left;
    flex: 0 0 auto;
  }
}
.setting-card .ivu-card-body {
  padding: 10px 16px;
}
</style>
